import java.util.Arrays;
import java.util.PriorityQueue;

public class LeetCode215 {
    /*    public static int findKthLargest(int[] nums, int k) {
            Arrays.sort(nums);
            return nums[nums.length - k];
        }*/
    public static int findKthLargest(int[] nums, int k) {
        // 创建一个优先队列（最小堆）
        PriorityQueue<Integer> pq = new PriorityQueue<>();

        // 遍历数组中的每个元素
        for (int num : nums) {
            pq.add(num); // 将元素添加到堆中

            // 如果堆的大小超过k，则移除堆顶元素
            if (pq.size() > k) {
                pq.poll();
            }
        }

        // 返回堆顶元素，即第k大的元素
        return pq.peek();
    }

    public static void main(String[] args) {
        System.out.println(findKthLargest(new int[]{3, 2, 1, 5, 6, 4}, 2));
    }
}
